package cn.anecansaitin.whimsy.common.extension.comboSystem;

import net.minecraft.world.entity.player.Player;

public interface ISkill {
    ISkill EMPTY = new ISkill() {
        @Override
        public boolean execute(int skillTick, Player player, ExtraData extra) {
            return false;
        }

        @Override
        public boolean canCachingKey(int skillTick, ExtraData extra) {
            return true;
        }

        @Override
        public boolean canDeriving(int skillTick, ExtraData extra) {
            return true;
        }

        @Override
        public String getName() {
            return "empty";
        }
    };

    boolean execute(int skillTick, Player player, ExtraData extra);

    /**
     * 当前时间能否缓存按键输入
     */
    boolean canCachingKey(int skillTick, ExtraData extra);

    /**
     * 当前时间能否派生下一个技能。
     * 若可以，则先读取是否有缓存按键，如果有则先按照缓存执行。
     * 如果缓存按键没有对应技能则根据当前按键输入来执行。
     */
    boolean canDeriving(int skillTick, ExtraData extra);

    String getName();
}
